/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


package Modele;

import ecoute.Ecouteur;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Contient une liste de contacts appartenant a un meme groupe.
 * @see Contact
 * @author Jo
 */
//extends DefaultListModel
public class Groupe extends AbstractGM {
    
    
    
    public List<Contact> contacts;//travailler avec les interfaces au lieu d'implementations
    public String nom;
    
    public Groupe(String nom/*, ListDataListener listener*/){
        
        this.nom = nom;
        contacts = new ArrayList<Contact>();//TODO HashMap
        
        //this.addListDataListener(listener);
    }
    
    public void ajouterContact(Contact contact){
        contacts.add(contact);
        fireIntervalAdded(this, contacts.size()-1, contacts.size()-1);
        fireSomethingChanged(Ecouteur.AJOUT_CONTACT);
    }
    
    public void modifierContact(int indexContact, Contact c){
        contacts.set(indexContact, c);
        fireContentsChanged(this, indexContact, indexContact);
        fireSomethingChanged(Ecouteur.MODIF_CONTACT);
    }
    
    public void supprimerContact(int index){
        contacts.remove(index);
        fireIntervalRemoved(this, index, index);
        fireSomethingChanged(Ecouteur.SUPPR_CONTACT);
    }
    
    //AbstractListModel
    @Override
    public int getSize() {
        return contacts.size();
    }

    @Override
    public Object getElementAt(int index) {
        return contacts.get(index).getNom().toUpperCase() + " " + contacts.get(index).getPrenom() + " " ;
    }

    @Override
    public String toString() {
        //TODO? pour laffichage dans la jliste
        return nom;
    }
    
    public void sort_AZ(){
        Collections.sort(contacts, new Comparators().new ComparatorContacts_AZ());
        fireContentsChanged(this, 0, contacts.size()-1);
        fireSomethingChanged(Ecouteur.TRI_CONTACTS);
    }
    
    
    
    
    
}
